#ifndef DEBUG_H_INCLUDED
#define DEBUG_H_INCLUDED
#include <iostream>

#define DEBUG_NONE  0x0000
#define DEBUG_ALL    0xFFFF
#define DEBUG_THREAD    0X0001
#define DEBUG_DRAW      0X0002
#define DEBUG_CREATE_DELETE  0X0004
#define DEBUG_ADD_REMOVE    0X0008
#define DEBUG_INFO      0X0010
#define DEBUG_EVENT     0X0020
#define DEBUG_RENDER    0X0040
#define DEBUG_MUTEX     0X0080

class Debug
{
    protected:
    static int m_debug;
    public:
    Debug();
    static bool test(int debug);
    static void set(int debug);
};

inline bool Debug::test(int debug) {
    return m_debug & debug;
}

inline void Debug::set(int debug) {
    m_debug = debug;
}

#endif // DEBUG_H_INCLUDED
